/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package CONTROLLER;

import DAO.*;
import MODEL.*;
import VIEW.ProjetoFinal;
import java.net.URL;
import java.util.ListIterator;
import java.util.ResourceBundle;
import javafx.beans.property.ReadOnlyObjectWrapper;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.SelectionMode;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.input.MouseEvent;
import javafx.util.Callback;

/**
 *
 * @author MatheuseJessica
 */
public class PedidoController implements Initializable {

    @FXML
    TableColumn col_pNome, col_pCategoria, col_pValor, col_sNome, col_sValor, col_pQuantia, col_sTotal;
    @FXML
    TableView tb_produtos, tb_selecionados;

    public PedidoController() {
    }

    @FXML
    public void addSelecionados(ActionEvent event) {
        int flag=0;
        try {
            if (!tb_produtos.getItems().isEmpty() && !tb_produtos.getSelectionModel().isEmpty()) {
               tb_selecionados.getItems().add(tb_produtos.getFocusModel().getFocusedItem());
            }
        } catch (Exception e) {
        }
    }
    

    @FXML
    public void addSelecionados2(MouseEvent ev){
        if(ev.getClickCount()==2){
           try {
                if (!tb_produtos.getItems().isEmpty() && !tb_produtos.getSelectionModel().isEmpty()) {
                   tb_selecionados.getItems().add(tb_produtos.getFocusModel().getFocusedItem());
                }
            } catch (Exception e) {
            } 
        }
    }

    @FXML
    public void addPedidos(ActionEvent event) {
        ListIterator listIterator = tb_selecionados.getItems().listIterator();
        int quantia=0;
        while (listIterator.hasNext()) {
            Produtos p = (Produtos) listIterator.next();
            //  System.out.println(p.getNome());
            DaoItensVenda div = new DaoItensVenda();
            ItensVenda iv = new ItensVenda();
            iv.setProduto(p);
            iv.setQuantia(1);
            iv.setValor_unitario(p.getPreco_venda());
            Mesa me = (Mesa) CaixaController.getMesa();
            div.setItensVenda(iv, me.getCodigo());
            quantia++;
        }
        ProjetoFinal.getInstance().getCaixa().setVendas(ProjetoFinal.getInstance().getCaixa().getVendas()+quantia);
        
        ProjetoFinal.getInstance().gotoCaixa();
        //setTbProdutos(null);
    }

    @FXML
    public void RemoveSelecionados(ActionEvent event) {
        if (!tb_selecionados.getItems().isEmpty() && !tb_selecionados.getSelectionModel().isEmpty()) {
            tb_selecionados.getItems().remove(tb_selecionados.getFocusModel().getFocusedIndex());
        }

    }

    @FXML
    public void voltar(ActionEvent event) {
        ProjetoFinal.getInstance().gotoCaixa();
    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {


        //System.out.println("A Mesa é: "+CaixaController.getMesa().getCodigo()+ " Sua descricao: "+CaixaController.getMesa().getDescricao());
        col_pNome.setCellValueFactory(new PropertyValueFactory<Produtos, String>("nome"));
        col_pCategoria.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Produtos, String>, ObservableValue<String>>() {
            @Override
            public ObservableValue<String> call(TableColumn.CellDataFeatures<Produtos, String> p) {
                return new ReadOnlyObjectWrapper(p.getValue().getCategoria().getDescricao());
            }
        });
        col_pValor.setCellValueFactory(new PropertyValueFactory<Produtos, String>("preco_venda"));
        col_sTotal.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Produtos, String>, ObservableValue<String>>() {
            @Override
            public ObservableValue<String> call(TableColumn.CellDataFeatures<Produtos, String> p) {
                return new ReadOnlyObjectWrapper(p.getValue().getPreco_venda());
            }
        });
        col_sNome.setCellValueFactory(new PropertyValueFactory<Produtos, String>("nome"));
        col_sValor.setCellValueFactory(new PropertyValueFactory<Produtos, String>("preco_venda"));
        
        col_pQuantia.setCellValueFactory(new PropertyValueFactory<Produtos, String>("quantia"));
        tb_produtos.setItems(FXCollections.observableList(new DaoProdutos().getProdutos()));
        tb_produtos.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
    }
}
